部署 Kanzi 应用程序到 Android

如果您打算开发面向 Android 系统的 Kanzi 应用程序,您可以使用 Android Studio、Clang 工具链和 Gradle 构建系统。此开发方式已在 Ubuntu/Linux 16.04.5、Ubuntu/Linux 18.04.1 和 Windows 10 上经过测试。

要构建和部署使用 Kanzi 3.6.3 创建的 Kanzi 应用程序或更早版本,请参阅 构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android

要求

要使用 Kanzi Android 平台软件包构建和部署 Kanzi 应用程序到 Android 设备,您需要:

安装 Android 平台包

Kanzi Android 平台包 zip 文件解压到 <KanziWorkspace> 目录。当解压 zip 文件时,跳过相同文件,不要覆盖原有文件。

设置构建环境

安装 Kanzi Android 平台软件包后,设置您的构建环境。

要设置构建环境,请执行以下操作:

  1. 打开 Android Studio,在“欢迎”屏幕选择“配置”,并在下拉菜单中选择“SDK 管理器”。
  2. 在“SDK 管理器”窗口的“SDK 工具”选项卡中,选择 Cmake 和 NDK,然后选择“确定”。
    Android Studio 安装构建和部署面向 Android 设备的 Kanzi 应用程序所需的 Android NDK 和 CMake。

使用 Android Studio 构建和部署 Kanzi 应用程序

要一起使用 Android 平台软件包和 Kanzi 3.6.43.6.5 应用程序,您可以迁移应用程序。请参阅 迁移 Kanzi 3.6.4 和 3.6.5 应用程序以使用 Android 平台包

要从 Android Studio 构建和部署 Kanzi 应用程序,请执行以下操作:

  1. 打开 Android Studio 并在“欢迎”屏幕选择“打开”现有 Android Studio 工程。
    “打开文件”或“工程”窗口打开。
  2. 在“打开文件”或“工程”窗口中,转到 <KanziWorkspace>/Projects/<ProjectName>/Application/configs/platforms 并选择 android_gradle 工程。
  3. 在 Android Studio 主菜单中选择“构建”>“构建工程”以构建应用程序包。
    默认情况下,Android Studio 使用调试版本配置。当构建 Kanzi 工程时,您可以在 <KanziWorkspace>/Projects/<ProjectName>/Application/configs/platforms/android_gradle/app/build/outputs/apk/debug 中找到 Android 软件包。
    要使用发布版本配置进行构建,请打开“构建变量”窗口并设置“构建变量”以发布。
    建议

    If you do not specify the target architecture, Gradle builds the package for all supported platforms. You can set the architectures for which you want to build your package in build.gradle.

    android {
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a', 'x86'
            }
        }
    }

  4. 部署您的 Kanzi 应用程序到 Android 设备或 Android 虚拟设备:
    1. 将 Android 设备连接到计算机。要部署到 Android 虚拟设备,您必须先创建一台 Android 虚拟设备。请参阅 https://developer.android.com/studio/run/emulator
    2. 在 Android Studio 主菜单中选择“运行”>“运行‘应用程序’”,并选择您要将应用程序部署到的设备。

从命令行构建和部署 Kanzi 应用程序

如果您要一起使用 Android 平台软件包和 Kanzi 3.6.43.6.5 应用程序,您可以迁移应用程序。请参阅 迁移 Kanzi 3.6.4 和 3.6.5 应用程序以使用 Android 平台包

您可以使用命令行构建和部署您的 Kanzi 应用程序到 Android 设备。在 <KanziWorkspace>/Engine/applications/kzb_player/configs/platforms/android_gradle 目录中:

排除问题

Kanzi Studio 构建和部署 Kanzi 应用程序

Kanzi Studio 中您可以使用一条命令构建和部署您的 Kanzi 应用程序到 Android 设备。如果您尚处在应用程序的开发或原型设计阶段,但又想要了解应用程序在 Android 设备上如何运行以及看起来怎么样时,可以使用此方法。

您需要先为 Android 建立 Kanzi 构建环境,并在您的计算机上安装用于 Android 设备的 USB 设备驱动程序,然后才能从 Kanzi Studio 构建 Kanzi 应用程序并将其部署到 Android 设备。请参阅 安装适用于 Android 的 Kanzi 构建环境

如果您的 Kanzi 应用程序包含一个 Kanzi Engine 插件,则您必须手动构建和部署您的应用程序。请参阅 构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android

要从 Kanzi Studio 构建和部署 Kanzi 应用程序,请执行以下操作:

  1. 如果您使用 Kanzi Engine API 向应用程序添加内容,确保将该内容纳入 <ProjectName>/configs/android/build.xml 文件,它位于 <target name="-pre-compile"> 目标中。例如,要添加 <ProjectName>/Application/bin 目录中的所有 .xml 和 .png 文件,使用
    <target name="-pre-compile">
            <echo>Copying assets</echo>
            <copy todir="${asset.absolute.dir}">
                <fileset dir="${asset.absolute.dir}/../../../../bin">
                    <include name="**/*.kzb"/>
                    <include name="**/*.cfg"/>
                    <include name="**/*.xml"/>
                    <include name="**/*.png"/>
  2. 将 Android 设备连接到计算机。
  3. Kanzi Studio 中为您的 Kanzi 应用程序创建或打开工程并选择文件 (File) > 导出 (Export) > 构建 Android 包 (Build Android Package)
    Kanzi Studio 会构建应用程序源代码、创建 .apk 包并将其安装到您的 Android 设备上。

配置 Android 版本

您可以使用 Kanzi Studio 中的应用程序配置来配置用于 Android 的 Kanzi 应用程序版本。例如,您可以设置目标架构以及 Kanzi 是否需要将所构建的包部署到附加的目标设备上。您可以设置当您在默认版本配置 (Default Build Configuration) 属性中的工程 (Project) > 属性 (Properties) 中选择 文件 (File) > 导出 (Export) > 构建 Android 包 (Build Android Package) 时要使用哪个应用程序配置。

  1. Kanzi Studio 中的素材库 (Library) 中,右键点击应用程序 (Applications) 并选择创建应用程序配置 (Create Application Configuration)
  2. 属性 (Properties) 中,为 Android 版本设置配置。
    例如:

迁移 Kanzi 3.6.43.6.5 应用程序以使用 Android 平台包

Android 平台包不支持 V8 库。在您迁移 Kanzi 应用程序前,请禁用或移除您希望迁移的 Kanzi 应用程序中的 JavaScript。

要使用 Android 平台包,请按以下步骤迁移 Kanzi 3.6.43.6.5 应用程序:

  1. Kanzi Android 平台包 zip 文件导出到 <KanziWorkspace> 目录。导出 zip 文件时,请选择跳过相同文件,而非覆盖原有文件。
  2. <KanziWorkspace>/Engine/applications/kzb_player/configs/platforms/android_gradle 目录复制到您希望将其迁移到新 Android 平台包的 Kanzi 应用程序 的 <ProjectName>/Application/configs/platforms目录中。
  3. Kanzi 应用程序中,按以下步骤编辑 Java 资源:
    1. android_gradle/app/src/main/java/com/rightware/kanzi/kzbplayer 目录中,将 KZBPlayer.java 文件重命名为您应用程序的名称。
      例如,如果您工程的名称是“MyProject”,则将 KZBPlayer.java 文件重命名为“MyProject.java”。
    2. android_gradle/app/src/main/java/com/rightware/kanzi 目录中,将 kzbplayer 目录重命名为您应用程序的小写名称。
      例如,如果您应用程序的名称是“MyProject”,则将 kzbplayer 目录重命名为“myproject”。
    3. 在文本编辑器中打开 <project_name>.java 文件并编辑该文件,使其包含对您应用程序的引用。
      例如,如果您应用程序的名称是“MyProject”:
      • 更改
        com.rightware.kanzi.kzbplayer

        com.rightware.kanzi.myproject
      • 更改类
        KZBPlayer

        MyProject
      • 更改 TAG
        "KZBPlayer"

        "MyProject"
      • 更改
        Debug.startMethodTracing("kzbplayer")

        Debug.startMethodTracing("myproject")
    4. 在文本编辑器中打开 android_gradle/app/src/main/AndroidManifest.xml 文件并进行编辑,使其包含对您应用程序的引用。
      例如,如果您应用程序的名称是“MyProject”:
      • 更改
        com.rightware.kanzi.kzbplayer

        com.rightware.kanzi.myproject
      • 更改
        activity android:name=".KZBPlayer"

        activity android:name=".MyProject"
    5. 在文本编辑器中打开 android_gradle/app/src/main/res/values/strings.xml 文件并进行编辑,使其包含您应用程序的名称。
      例如,如果您应用程序的名称是“MyProject”,更改
      <string name="app_name">KZB Player</string>

      <string name="app_name">MyProject</string>
  4. 在工程中,编辑创建脚本:
    1. 在文本编辑器中打开 android_gradle/app/CMakeLists.txt 文件并进行编辑,使其包含您应用程序的名称以及到 C++ 应用程序源文件的路径。
      例如,如果您应用程序的名称是“MyProject”:
      • 更改
        project(kzb_player)

        project(myproject)
      • 更改
        add_executable(${PROJECT_NAME} src/main/cpp/kzb_player.cpp)

        add_executable(${PROJECT_NAME} ../../../../src/myproject.cpp)
    2. 在文本编辑器中打开 android_gradle/settings.gradle 文件并进行编辑,使其包含您应用程序的名称。
      例如,如果您应用程序的名称是“MyProject”,则将 rootProject.name 的值设置为 "myproject"
    3. 在文本编辑器中打开 android_gradle/app/build.gradle 文件并进行编辑,让 applicationId 指向您的应用程序。
      例如,如果您应用程序的名称“MyProject”,则将 applicationId 设置为 "com.rightware.kanzi.myproject"
    4. In a text editor open the android_gradle/gradle.properties file and replace:
      org.gradle.jvmargs=-Xmx<size>m
      with
      org.gradle.jvmargs=-Xmx4608m
  5. 在应用程序中,按以下步骤编辑 C++ 源文件:
    1. Application/src/<project_name>.cpp 文件,将
      <ProjectName>: public ExampleApplication

      更改为

      <ProjectName>: public Application
    2. <project_name>.cpp 文件中添加不包含 V8Module 注册的 registerMetadataOverride 回调。
      <ProjectName>: public Application
      {
      public: 
          ...
      	
          virtual void registerMetadataOverride(ObjectFactory& /*factory*/) KZ_OVERRIDE
          {
              Domain* domain = getDomain();
              KanziComponentsModule::registerModule(domain);
          }
      };
    3. <project_name>.cpp 文件的 onConfigure 回调函数中,移除对 ExampleApplication 类的引用:
          virtual void onConfigure(ApplicationProperties& configuration) KZ_OVERRIDE
          {
              Application::onConfigure(configuration);
              configuration.binaryName = "<project_name>.kzb.cfg";
              configuration.extensionOutputEnabled = true;
              configuration.defaultSurfaceProperties.antiAliasing = 0;
              configuration.defaultSurfaceProperties.bitsDepthBuffer = 0;
              configuration.defaultSurfaceProperties.bitsStencil = 0;
          }
  6. 使用 Android Studio 或命令行界面创建和部署您的 Kanzi 应用程序。请参阅部署 Kanzi 应用程序到 Android部署 Kanzi 应用程序到 Android

构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android

此方法只适用于构建和部署使用 Kanzi 3.6.3 或更早版本创建的 Kanzi 应用程序到 Android

SCons 在平台的配置目录中运行 SConstruct,您可以通过该平台运行 scons 命令。SConstruct 文件是构建应用程序的入口点,包含有关 Kanzi Engine 位置的信息并运行以下文件:

要构建和部署 Kanzi 3.6.3 及更早版本应用程序到 Android,请执行以下操作:

  1. 如果您使用 Kanzi Engine API 向应用程序添加内容,确保将该内容纳入 <ProjectName>/configs/android/build.xml 文件,它位于 <target name="-pre-compile"> 目标中。例如,要添加 <ProjectName>/Application/bin 目录中的所有 .xml 和 .png 文件,使用
    <target name="-pre-compile">
            <echo>Copying assets</echo>
            <copy todir="${asset.absolute.dir}">
                <fileset dir="${asset.absolute.dir}/../../../../bin">
                    <include name="**/*.kzb"/>
                    <include name="**/*.cfg"/>
                    <include name="**/*.xml"/>
                    <include name="**/*.png"/>
  2. 将 Android 设备连接到计算机。
  3. 打开您要为其构建 Kanzi 应用程序的平台配置目录中的命令行(<ProjectName>/Application/configs/platforms/<PlatformName>)并确保设置了正确的环境变量。请参阅设置 Kanzi 环境变量
    例如,要针对以下平台构建 Kanzi 应用程序:
  4. 运行 scons 命令,并使用您的 Kanzi 应用程序的构建参数。

    语法scons <library> <type> <name>
    参数
    library

    (可选) 图形素材库:

    • ES2 用 OpenGL ES 2.0 构建应用程序
    • GL 用 OpenGL 构建应用程序
    type

    (可选) 构建类型:

    • Release 会启用编译器优化来构建应用程序。发布选项构建的文件比调试选项小。此选项用于产品。默认值。
    • Debug 会禁用编译器优化来构建应用程序,并包含可用于调试器的完整调试信息。调试选项构建的文件较大,调试应用程序运行速度较慢。此选项用于开发。
    • Profiling 构建启用编译器优化的应用程序,并按剖析构建链接应用程序。此选项用于测量 Kanzi Engine 不同部分的性能。例如,当您想了解应用程序启动期间 Kanzi 在不同的任务上花费了多少时间,或者应用程序哪些部分需要大量时间来运行。请参阅测量应用程序性能
    name(可选) 工程名称
    示例

    //使用在 config.py 和 SConstruct 配置文件中指定的默认设置
    //构建应用程序。
    scons
    // 构建和部署带有 OpenGL 图形库的
    // 应用程序调试版本。
    scons GL 调试
    // 从名为“MyProject”的 Kanzi Studio
    //工程创建带有 OpenGL ES 2.0 图形库的
    //应用程序调试版本。
    scons ES2 debug MyProject

    Scons 在 <ProjectName>/Application/output 目录中构建 Kanzi 应用程序源代码和二进制文件。

  5. <ProjectName>/Application/output 目录中,运行 adb installant release install,以便将 Kanzi 应用程序的 .apk 包安装到您的 Android 设备上。
    例如,如果您的工程名为 MyProject 并存储在 <KanziWorkspace> 中,请运行:
    adb install MyProject.apk

    ant release install

设置用于 Kanzi 应用程序的 Java 版本

要为用于 Android 的 Kanzi 应用程序设置 Java 版本,请将其作为顶层 <project> 元素的第一个子元素添加到 Application/configs/platforms/android/build.xml 中,并将值特性设置为要使用的 Java 版本

<property name="java.target" value="7" />
<property name="java.source" value="7" />

排除问题

另请参阅

部署面向 Android 系统的 Kanzi 应用程序

Kanzi Android API 参考

安装适用于 Android 的 Kanzi 构建环境

使用脚本为 Android 构建 Kanzi 应用程序

手动安装 Kanzi 构建环境

教程:创建简单的车载信息娱乐应用程序

Android OEM USB 驱动程序

部署 Kanzi 应用程序